// 导航守卫处理
import router from '@/router'
import store from '@/store'
// 设置白名单即不需要登录的页面
const whitePage = ['/login', '/404']

// 前置守卫
router.beforeEach(async(to, from, next) => {
  // 判断有无token
  if (store.state.user.token) {
    // 已经登陆了有token
    // 判读是否是登录页
    if (to.path === '/login') {
      // 回到首页
      next('/')
    } else {
      // 不是login页就发送数据请求
      // 通知uesr模块发送用户数据请求
      // 存在问题，路由切换也会导致接口请求，导致接口请求浪费
      // 解决：发请求前判断vuex中是否有数据，有就不发送求情
      if (store.state.user.userInfo.userId) {
        // 如果vuex中有数据就不用发送请求
        next()
      } else {
        await store.dispatch('user/getUserInfo')
        next(to.fullPath)
      }
    }
  } else {
    //   没有登录，无token
    if (whitePage.includes(to.path)) {
      // 如果路径在白名单内则不需要登录
      next()
    } else {
      next('/login?redirect?=' + to.fullPath)
    }
  }
})
// 后置守卫
router.afterEach(() => {
  // console.log('afterEach')
})
